package com.gengzp.rpc.model.nacos.resp;

import com.gengzp.rpc.model.nacos.dto.NacosServiceInstanceV1Dto;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * @ClassName SearchNacosServiceInstanceListV1Resp
 * @Description 查询服务下的实例列表返回信息实体 v1
 * @Author gengzp
 * @Date 2025/8/21 11:42
 */
public class SearchNacosServiceInstanceListV1Resp implements Serializable {

    @Serial
    private static final long serialVersionUID = 8462210525680045322L;

    /**
     * 服务的完整唯一标识
     * 格式为 {groupName}@@{serviceName} (分组名 + 服务名)
     */
    private String name;

    /**
     * 服务所属的分组名称，默认DEFAULT_GROUP
     */
    private String groupName;

    /**
     * 服务关联的集群列表（多个集群用逗号分隔），空表示默认集群DEFAULT
     */
    private String clusters;

    /**
     * 客户端建议的缓存过期时间（毫秒）
     */
    private Long cacheMillis;

    /**
     * 服务下的实例列表
     */
    private List<NacosServiceInstanceV1Dto> hosts;

    /**
     * 实例列表最后一次刷新的时间戳（毫秒）
     */
    private Long lastRefTime;

    /**
     * 数据校验和，用于验证数据完整性
     */
    private String checksum;

    /**
     * 是否返回所有实例（包括不健康的）
     * false表示仅返回符合过滤条件的实例
     */
    private Boolean allIPs;

    /**
     * 是否达到保护阈值
     * true表示健康实例比例低于阈值，已触发保护机制（返回所有实例）
     */
    private Boolean reachProtectionThreshold;

    /**
     * 实例集合数据是否有效
     * true表示数据正常可用（未被标记为删除或过期）
     */
    private Boolean valid;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public String getClusters() {
        return clusters;
    }

    public void setClusters(String clusters) {
        this.clusters = clusters;
    }

    public Long getCacheMillis() {
        return cacheMillis;
    }

    public void setCacheMillis(Long cacheMillis) {
        this.cacheMillis = cacheMillis;
    }

    public List<NacosServiceInstanceV1Dto> getHosts() {
        return hosts;
    }

    public void setHosts(List<NacosServiceInstanceV1Dto> hosts) {
        this.hosts = hosts;
    }

    public Long getLastRefTime() {
        return lastRefTime;
    }

    public void setLastRefTime(Long lastRefTime) {
        this.lastRefTime = lastRefTime;
    }

    public String getChecksum() {
        return checksum;
    }

    public void setChecksum(String checksum) {
        this.checksum = checksum;
    }

    public Boolean getAllIPs() {
        return allIPs;
    }

    public void setAllIPs(Boolean allIPs) {
        this.allIPs = allIPs;
    }

    public Boolean getReachProtectionThreshold() {
        return reachProtectionThreshold;
    }

    public void setReachProtectionThreshold(Boolean reachProtectionThreshold) {
        this.reachProtectionThreshold = reachProtectionThreshold;
    }

    public Boolean getValid() {
        return valid;
    }

    public void setValid(Boolean valid) {
        this.valid = valid;
    }

}
